package com.hao.eduservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hao.eduservice.entity.EduCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hao.eduservice.entity.frontvo.CourseFrontVo;
import com.hao.eduservice.entity.frontvo.CourseWebVo;
import com.hao.eduservice.entity.vo.CourseInfoVo;
import com.hao.eduservice.entity.vo.CoursePublishVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author hao
 * @since 2020-12-02
 */
public interface EduCourseService extends IService<EduCourse> {

    /**
     * 保存课程信息
     *
     * @param courseInfoVo 课程信息签证官
     * @return String
     */
    String saveCourseInfo(CourseInfoVo courseInfoVo);

    /**
     * 获取课程信息
     *
     * @param courseId 进程id
     * @return {@link CourseInfoVo}
     */
    CourseInfoVo getCourseInfo(String courseId);

    /**
     * 更新课程信息
     *
     * @param courseInfoVo 课程信息签证官
     */
    void updateCourseInfo(CourseInfoVo courseInfoVo);

    /**
     * 获得发布课程信息
     *
     * @param courseId 进程id
     * @return {@link CoursePublishVo}
     */
    CoursePublishVo getPublishCourseInfo(String courseId);

    /**
     * 删除课程
     *
     * @param courseId 进程id
     */
    void deleteCourse(String courseId);

    /**
     * 查询用户首页显示的8条课程
     *
     * @return {@link List<EduCourse>}
     */
    List<EduCourse> selectFrontCourse();

    /**
     * 根据老师得到课程信息
     *
     * @param teacherId 老师id
     * @return {@link List<EduCourse>}
     */
    List<EduCourse> getCourseInfoByTeacherId(long teacherId);

    /**
     * 课程详情的方法
     *
     * @param courseFrontVo 课程前签证官
     * @param pageParam     页面参数
     * @return {@link Map<String, Object>}
     */
    Map<String, Object> getCourseFrontList(Page<EduCourse> pageParam, CourseFrontVo courseFrontVo);

    /**
     * 得到基层信息
     *
     * @param courseId 进程id
     * @return {@link CourseWebVo}
     */
    CourseWebVo getBaseCourseInfo(String courseId);
}
